import Foundation

struct TestCase: CustomStringConvertible {
  
  var text: String
  var keyword: String
  var fz: Double?
  var score: Double
  
  var description: String {
    
    var desc = "\"\(keyword)\" in \"\(text)\""
    if let fuzziness = self.fz {
      desc += " fz \(fuzziness)"
    }
    
    return desc
  }
}

class TestCases {
  
  static var `default`: [TestCase] = [
    TestCase(text: "", keyword: "", fz: nil, score: 1.0),
    TestCase(text: "", keyword: "h", fz: nil, score: 0.0),
    TestCase(text: "hello world", keyword: "", fz: nil, score: 0.0),
    
    TestCase(text: "hello world", keyword: "axl", fz: nil, score: 0.0),
    TestCase(text: "hello world", keyword: "ow", fz: nil, score: 0.354545454545455),
    TestCase(text: "hello world", keyword: "e", fz: nil, score: 0.109090909090909),
    TestCase(text: "hello world", keyword: "h", fz: nil, score: 0.586363636363636),
    TestCase(text: "hello world", keyword: "he", fz: nil, score: 0.622727272727273),
    TestCase(text: "hello world", keyword: "hel", fz: nil, score: 0.659090909090909),
    TestCase(text: "hello world", keyword: "hell", fz: nil, score: 0.695454545454545),
    TestCase(text: "hello world", keyword: "hello", fz: nil, score: 0.731818181818182),
    TestCase(text: "hello world", keyword: "hello worl", fz: nil, score: 0.913636363636364),
    TestCase(text: "hello world", keyword: "hello world", fz: nil, score: 1.0),
    TestCase(text: "hello world", keyword: "hello wor1", fz: nil, score: 0.0),
    TestCase(text: "hello world", keyword: "h", fz: nil, score: 0.586363636363636),
    TestCase(text: "hello world", keyword: "H", fz: nil, score: 0.531818181818182),
    TestCase(text: "hello world", keyword: "HiMi", fz: nil, score: 0.0),
    TestCase(text: "hello world", keyword: "Hills", fz: nil, score: 0.0),
    TestCase(text: "hello world", keyword: "Hillsd", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "axl", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "ow", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "e", fz: nil, score: 0.15),
    TestCase(text: "He", keyword: "h", fz: nil, score: 0.675),
    TestCase(text: "He", keyword: "he", fz: nil, score: 0.9),
    TestCase(text: "He", keyword: "hel", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "hell", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "hello", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "hello worl", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "hello world", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "hello wor1", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "h", fz: nil, score: 0.675),
    TestCase(text: "He", keyword: "H", fz: nil, score: 0.75),
    TestCase(text: "He", keyword: "HiMi", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "Hills", fz: nil, score: 0.0),
    TestCase(text: "He", keyword: "Hillsd", fz: nil, score: 0.0),
    TestCase(text: "Hello", keyword: "axl", fz: nil, score: 0.0),
    TestCase(text: "Hello", keyword: "ow", fz: nil, score: 0.0),
    TestCase(text: "Hello", keyword: "e", fz: nil, score: 0.12),
    TestCase(text: "Hello", keyword: "h", fz: nil, score: 0.57),
    TestCase(text: "Hello", keyword: "he", fz: nil, score: 0.675),
    TestCase(text: "Hello", keyword: "hel", fz: nil, score: 0.763333333333333),
    TestCase(text: "Hello", keyword: "hell", fz: nil, score: 0.8475),
    TestCase(text: "Hello", keyword: "hello", fz: nil, score: 0.93),
    TestCase(text: "Hello", keyword: "hello worl", fz: nil, score: 0.0),
    TestCase(text: "Hello", keyword: "hello world", fz: nil, score: 0.0),
    TestCase(text: "Hello", keyword: "hello wor1", fz: nil, score: 0.0),
    TestCase(text: "Hello", keyword: "h", fz: nil, score: 0.57),
    TestCase(text: "Hello", keyword: "H", fz: nil, score: 0.63),
    TestCase(text: "Hello", keyword: "HiMi", fz: nil, score: 0.0),
    TestCase(text: "Hello", keyword: "Hills", fz: nil, score: 0.0),
    TestCase(text: "Hello", keyword: "Hillsd", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "axl", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "ow", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "e", fz: nil, score: 0.105555555555556),
    TestCase(text: "Hillsdale Michigan", keyword: "h", fz: nil, score: 0.519444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "he", fz: nil, score: 0.4),
    TestCase(text: "Hillsdale Michigan", keyword: "hel", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "hell", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "hello", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "hello worl", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "hello world", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "hello wor1", fz: nil, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "h", fz: nil, score: 0.519444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "H", fz: nil, score: 0.572222222222222),
    TestCase(text: "Hillsdale Michigan", keyword: "HiMi", fz: nil, score: 0.669444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "Hills", fz: nil, score: 0.661111111111111),
    TestCase(text: "Hillsdale Michigan", keyword: "Hillsd", fz: nil, score: 0.683333333333333),
    TestCase(text: "hello world", keyword: "axl", fz: 0.5, score: 0.0212121212121212),
    TestCase(text: "hello world", keyword: "ow", fz: 0.5, score: 0.354545454545455),
    TestCase(text: "hello world", keyword: "e", fz: 0.5, score: 0.109090909090909),
    TestCase(text: "hello world", keyword: "h", fz: 0.5, score: 0.586363636363636),
    TestCase(text: "hello world", keyword: "he", fz: 0.5, score: 0.622727272727273),
    TestCase(text: "hello world", keyword: "hel", fz: 0.5, score: 0.659090909090909),
    TestCase(text: "hello world", keyword: "hell", fz: 0.5, score: 0.695454545454545),
    TestCase(text: "hello world", keyword: "hello", fz: 0.5, score: 0.731818181818182),
    TestCase(text: "hello world", keyword: "hello worl", fz: 0.5, score: 0.913636363636364),
    TestCase(text: "hello world", keyword: "hello world", fz: 0.5, score: 1.0),
    TestCase(text: "hello world", keyword: "hello wor1", fz: 0.5, score: 0.608181818181818),
    TestCase(text: "hello world", keyword: "h", fz: 0.5, score: 0.586363636363636),
    TestCase(text: "hello world", keyword: "H", fz: 0.5, score: 0.531818181818182),
    TestCase(text: "hello world", keyword: "HiMi", fz: 0.5, score: 0.197727272727273),
    TestCase(text: "hello world", keyword: "Hills", fz: 0.5, score: 0.273636363636364),
    TestCase(text: "hello world", keyword: "Hillsd", fz: 0.5, score: 0.272348484848485),
    TestCase(text: "He", keyword: "axl", fz: 0.5, score: 0.0),
    TestCase(text: "He", keyword: "ow", fz: 0.5, score: 0.0),
    TestCase(text: "He", keyword: "e", fz: 0.5, score: 0.15),
    TestCase(text: "He", keyword: "h", fz: 0.5, score: 0.675),
    TestCase(text: "He", keyword: "he", fz: 0.5, score: 0.9),
    TestCase(text: "He", keyword: "hel", fz: 0.5, score: 0.566666666666667),
    TestCase(text: "He", keyword: "hell", fz: 0.5, score: 0.43125),
    TestCase(text: "He", keyword: "hello", fz: 0.5, score: 0.36),
    TestCase(text: "He", keyword: "hello worl", fz: 0.5, score: 0.24),
    TestCase(text: "He", keyword: "hello world", fz: 0.5, score: 0.230578512396694),
    TestCase(text: "He", keyword: "hello wor1", fz: 0.5, score: 0.24),
    TestCase(text: "He", keyword: "h", fz: 0.5, score: 0.675),
    TestCase(text: "He", keyword: "H", fz: 0.5, score: 0.75),
    TestCase(text: "He", keyword: "HiMi", fz: 0.5, score: 0.27),
    TestCase(text: "He", keyword: "Hills", fz: 0.5, score: 0.243333333333333),
    TestCase(text: "He", keyword: "Hillsd", fz: 0.5, score: 0.226190476190476),
    TestCase(text: "Hello", keyword: "axl", fz: 0.5, score: 0.0266666666666667),
    TestCase(text: "Hello", keyword: "ow", fz: 0.5, score: 0.0466666666666667),
    TestCase(text: "Hello", keyword: "e", fz: 0.5, score: 0.12),
    TestCase(text: "Hello", keyword: "h", fz: 0.5, score: 0.57),
    TestCase(text: "Hello", keyword: "he", fz: 0.5, score: 0.675),
    TestCase(text: "Hello", keyword: "hel", fz: 0.5, score: 0.763333333333333),
    TestCase(text: "Hello", keyword: "hell", fz: 0.5, score: 0.8475),
    TestCase(text: "Hello", keyword: "hello", fz: 0.5, score: 0.93),
    TestCase(text: "Hello", keyword: "hello worl", fz: 0.5, score: 0.317142857142857),
    TestCase(text: "Hello", keyword: "hello world", fz: 0.5, score: 0.291818181818182),
    TestCase(text: "Hello", keyword: "hello wor1", fz: 0.5, score: 0.317142857142857),
    TestCase(text: "Hello", keyword: "h", fz: 0.5, score: 0.57),
    TestCase(text: "Hello", keyword: "H", fz: 0.5, score: 0.63),
    TestCase(text: "Hello", keyword: "HiMi", fz: 0.5, score: 0.222),
    TestCase(text: "Hello", keyword: "Hills", fz: 0.5, score: 0.33),
    TestCase(text: "Hello", keyword: "Hillsd", fz: 0.5, score: 0.282),
    TestCase(text: "Hillsdale Michigan", keyword: "axl", fz: 0.5, score: 0.12962962962963),
    TestCase(text: "Hillsdale Michigan", keyword: "ow", fz: 0.5, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "e", fz: 0.5, score: 0.105555555555556),
    TestCase(text: "Hillsdale Michigan", keyword: "h", fz: 0.5, score: 0.519444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "he", fz: 0.5, score: 0.4),
    TestCase(text: "Hillsdale Michigan", keyword: "hel", fz: 0.5, score: 0.266666666666667),
    TestCase(text: "Hillsdale Michigan", keyword: "hell", fz: 0.5, score: 0.21875),
    TestCase(text: "Hillsdale Michigan", keyword: "hello", fz: 0.5, score: 0.196),
    TestCase(text: "Hillsdale Michigan", keyword: "hello worl", fz: 0.5, score: 0.179382716049383),
    TestCase(text: "Hillsdale Michigan", keyword: "hello world", fz: 0.5, score: 0.17489898989899),
    TestCase(text: "Hillsdale Michigan", keyword: "hello wor1", fz: 0.5, score: 0.179382716049383),
    TestCase(text: "Hillsdale Michigan", keyword: "h", fz: 0.5, score: 0.519444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "H", fz: 0.5, score: 0.572222222222222),
    TestCase(text: "Hillsdale Michigan", keyword: "HiMi", fz: 0.5, score: 0.669444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "Hills", fz: 0.5, score: 0.661111111111111),
    TestCase(text: "Hillsdale Michigan", keyword: "Hillsd", fz: 0.5, score: 0.683333333333333),
    TestCase(text: "hello world", keyword: "axl", fz: 0.7, score: 0.0265151515151515),
    TestCase(text: "hello world", keyword: "ow", fz: 0.7, score: 0.354545454545455),
    TestCase(text: "hello world", keyword: "e", fz: 0.7, score: 0.109090909090909),
    TestCase(text: "hello world", keyword: "h", fz: 0.7, score: 0.586363636363636),
    TestCase(text: "hello world", keyword: "he", fz: 0.7, score: 0.622727272727273),
    TestCase(text: "hello world", keyword: "hel", fz: 0.7, score: 0.659090909090909),
    TestCase(text: "hello world", keyword: "hell", fz: 0.7, score: 0.695454545454545),
    TestCase(text: "hello world", keyword: "hello", fz: 0.7, score: 0.731818181818182),
    TestCase(text: "hello world", keyword: "hello worl", fz: 0.7, score: 0.913636363636364),
    TestCase(text: "hello world", keyword: "hello world", fz: 0.7, score: 1.0),
    TestCase(text: "hello world", keyword: "hello wor1", fz: 0.7, score: 0.678671328671329),
    TestCase(text: "hello world", keyword: "h", fz: 0.7, score: 0.586363636363636),
    TestCase(text: "hello world", keyword: "H", fz: 0.7, score: 0.531818181818182),
    TestCase(text: "hello world", keyword: "HiMi", fz: 0.7, score: 0.212799043062201),
    TestCase(text: "hello world", keyword: "Hills", fz: 0.7, score: 0.304545454545455),
    TestCase(text: "hello world", keyword: "Hillsd", fz: 0.7, score: 0.302935606060606),
    TestCase(text: "He", keyword: "axl", fz: 0.7, score: 0.0),
    TestCase(text: "He", keyword: "ow", fz: 0.7, score: 0.0),
    TestCase(text: "He", keyword: "e", fz: 0.7, score: 0.15),
    TestCase(text: "He", keyword: "h", fz: 0.7, score: 0.675),
    TestCase(text: "He", keyword: "he", fz: 0.7, score: 0.9),
    TestCase(text: "He", keyword: "hel", fz: 0.7, score: 0.630769230769231),
    TestCase(text: "He", keyword: "hell", fz: 0.7, score: 0.5015625),
    TestCase(text: "He", keyword: "hello", fz: 0.7, score: 0.426315789473684),
    TestCase(text: "He", keyword: "hello worl", fz: 0.7, score: 0.282352941176471),
    TestCase(text: "He", keyword: "hello world", fz: 0.7, score: 0.26977886977887),
    TestCase(text: "He", keyword: "hello wor1", fz: 0.7, score: 0.282352941176471),
    TestCase(text: "He", keyword: "h", fz: 0.7, score: 0.675),
    TestCase(text: "He", keyword: "H", fz: 0.7, score: 0.75),
    TestCase(text: "He", keyword: "HiMi", fz: 0.7, score: 0.307894736842105),
    TestCase(text: "He", keyword: "Hills", fz: 0.7, score: 0.277272727272727),
    TestCase(text: "He", keyword: "Hillsd", fz: 0.7, score: 0.256666666666667),
    TestCase(text: "Hello", keyword: "axl", fz: 0.7, score: 0.0333333333333333),
    TestCase(text: "Hello", keyword: "ow", fz: 0.7, score: 0.0538461538461538),
    TestCase(text: "Hello", keyword: "e", fz: 0.7, score: 0.12),
    TestCase(text: "Hello", keyword: "h", fz: 0.7, score: 0.57),
    TestCase(text: "Hello", keyword: "he", fz: 0.7, score: 0.675),
    TestCase(text: "Hello", keyword: "hel", fz: 0.7, score: 0.763333333333333),
    TestCase(text: "Hello", keyword: "hell", fz: 0.7, score: 0.8475),
    TestCase(text: "Hello", keyword: "hello", fz: 0.7, score: 0.93),
    TestCase(text: "Hello", keyword: "hello worl", fz: 0.7, score: 0.384),
    TestCase(text: "Hello", keyword: "hello world", fz: 0.7, score: 0.352597402597403),
    TestCase(text: "Hello", keyword: "hello wor1", fz: 0.7, score: 0.384),
    TestCase(text: "Hello", keyword: "h", fz: 0.7, score: 0.57),
    TestCase(text: "Hello", keyword: "H", fz: 0.7, score: 0.63),
    TestCase(text: "Hello", keyword: "HiMi", fz: 0.7, score: 0.244736842105263),
    TestCase(text: "Hello", keyword: "Hills", fz: 0.7, score: 0.375),
    TestCase(text: "Hello", keyword: "Hillsd", fz: 0.7, score: 0.323684210526316),
    TestCase(text: "Hillsdale Michigan", keyword: "axl", fz: 0.7, score: 0.14957264957265),
    TestCase(text: "Hillsdale Michigan", keyword: "ow", fz: 0.7, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "e", fz: 0.7, score: 0.105555555555556),
    TestCase(text: "Hillsdale Michigan", keyword: "h", fz: 0.7, score: 0.519444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "he", fz: 0.7, score: 0.4),
    TestCase(text: "Hillsdale Michigan", keyword: "hel", fz: 0.7, score: 0.284615384615385),
    TestCase(text: "Hillsdale Michigan", keyword: "hell", fz: 0.7, score: 0.2359375),
    TestCase(text: "Hillsdale Michigan", keyword: "hello", fz: 0.7, score: 0.210526315789474),
    TestCase(text: "Hillsdale Michigan", keyword: "hello worl", fz: 0.7, score: 0.192652329749104),
    TestCase(text: "Hillsdale Michigan", keyword: "hello world", fz: 0.7, score: 0.186616161616162),
    TestCase(text: "Hillsdale Michigan", keyword: "hello wor1", fz: 0.7, score: 0.192652329749104),
    TestCase(text: "Hillsdale Michigan", keyword: "h", fz: 0.7, score: 0.519444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "H", fz: 0.7, score: 0.572222222222222),
    TestCase(text: "Hillsdale Michigan", keyword: "HiMi", fz: 0.7, score: 0.669444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "Hills", fz: 0.7, score: 0.661111111111111),
    TestCase(text: "Hillsdale Michigan", keyword: "Hillsd", fz: 0.7, score: 0.683333333333333),
    TestCase(text: "hello world", keyword: "axl", fz: 1.0, score: 0.0424242424242424),
    TestCase(text: "hello world", keyword: "ow", fz: 1.0, score: 0.354545454545455),
    TestCase(text: "hello world", keyword: "e", fz: 1.0, score: 0.109090909090909),
    TestCase(text: "hello world", keyword: "h", fz: 1.0, score: 0.586363636363636),
    TestCase(text: "hello world", keyword: "he", fz: 1.0, score: 0.622727272727273),
    TestCase(text: "hello world", keyword: "hel", fz: 1.0, score: 0.659090909090909),
    TestCase(text: "hello world", keyword: "hell", fz: 1.0, score: 0.695454545454545),
    TestCase(text: "hello world", keyword: "hello", fz: 1.0, score: 0.731818181818182),
    TestCase(text: "hello world", keyword: "hello worl", fz: 1.0, score: 0.913636363636364),
    TestCase(text: "hello world", keyword: "hello world", fz: 1.0, score: 1.0),
    TestCase(text: "hello world", keyword: "hello wor1", fz: 1.0, score: 0.837272727272727),
    TestCase(text: "hello world", keyword: "h", fz: 1.0, score: 0.586363636363636),
    TestCase(text: "hello world", keyword: "H", fz: 1.0, score: 0.531818181818182),
    TestCase(text: "hello world", keyword: "HiMi", fz: 1.0, score: 0.269318181818182),
    TestCase(text: "hello world", keyword: "Hills", fz: 1.0, score: 0.397272727272727),
    TestCase(text: "hello world", keyword: "Hillsd", fz: 1.0, score: 0.39469696969697),
    TestCase(text: "He", keyword: "axl", fz: 1.0, score: 0.0),
    TestCase(text: "He", keyword: "ow", fz: 1.0, score: 0.0),
    TestCase(text: "He", keyword: "e", fz: 1.0, score: 0.15),
    TestCase(text: "He", keyword: "h", fz: 1.0, score: 0.675),
    TestCase(text: "He", keyword: "he", fz: 1.0, score: 0.9),
    TestCase(text: "He", keyword: "hel", fz: 1.0, score: 0.775),
    TestCase(text: "He", keyword: "hell", fz: 1.0, score: 0.7125),
    TestCase(text: "He", keyword: "hello", fz: 1.0, score: 0.675),
    TestCase(text: "He", keyword: "hello worl", fz: 1.0, score: 0.6),
    TestCase(text: "He", keyword: "hello world", fz: 1.0, score: 0.593181818181818),
    TestCase(text: "He", keyword: "hello wor1", fz: 1.0, score: 0.6),
    TestCase(text: "He", keyword: "h", fz: 1.0, score: 0.675),
    TestCase(text: "He", keyword: "H", fz: 1.0, score: 0.75),
    TestCase(text: "He", keyword: "HiMi", fz: 1.0, score: 0.45),
    TestCase(text: "He", keyword: "Hills", fz: 1.0, score: 0.43),
    TestCase(text: "He", keyword: "Hillsd", fz: 1.0, score: 0.416666666666667),
    TestCase(text: "Hello", keyword: "axl", fz: 1.0, score: 0.0533333333333333),
    TestCase(text: "Hello", keyword: "ow", fz: 1.0, score: 0.07),
    TestCase(text: "Hello", keyword: "e", fz: 1.0, score: 0.12),
    TestCase(text: "Hello", keyword: "h", fz: 1.0, score: 0.57),
    TestCase(text: "Hello", keyword: "he", fz: 1.0, score: 0.675),
    TestCase(text: "Hello", keyword: "hel", fz: 1.0, score: 0.763333333333333),
    TestCase(text: "Hello", keyword: "hell", fz: 1.0, score: 0.8475),
    TestCase(text: "Hello", keyword: "hello", fz: 1.0, score: 0.93),
    TestCase(text: "Hello", keyword: "hello worl", fz: 1.0, score: 0.735),
    TestCase(text: "Hello", keyword: "hello world", fz: 1.0, score: 0.717272727272727),
    TestCase(text: "Hello", keyword: "hello wor1", fz: 1.0, score: 0.735),
    TestCase(text: "Hello", keyword: "h", fz: 1.0, score: 0.57),
    TestCase(text: "Hello", keyword: "H", fz: 1.0, score: 0.63),
    TestCase(text: "Hello", keyword: "HiMi", fz: 1.0, score: 0.33),
    TestCase(text: "Hello", keyword: "Hills", fz: 1.0, score: 0.51),
    TestCase(text: "Hello", keyword: "Hillsd", fz: 1.0, score: 0.48),
    TestCase(text: "Hillsdale Michigan", keyword: "axl", fz: 1.0, score: 0.194444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "ow", fz: 1.0, score: 0.0),
    TestCase(text: "Hillsdale Michigan", keyword: "e", fz: 1.0, score: 0.105555555555556),
    TestCase(text: "Hillsdale Michigan", keyword: "h", fz: 1.0, score: 0.519444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "he", fz: 1.0, score: 0.4),
    TestCase(text: "Hillsdale Michigan", keyword: "hel", fz: 1.0, score: 0.325),
    TestCase(text: "Hillsdale Michigan", keyword: "hell", fz: 1.0, score: 0.2875),
    TestCase(text: "Hillsdale Michigan", keyword: "hello", fz: 1.0, score: 0.265),
    TestCase(text: "Hillsdale Michigan", keyword: "hello worl", fz: 1.0, score: 0.282222222222222),
    TestCase(text: "Hillsdale Michigan", keyword: "hello world", fz: 1.0, score: 0.274494949494949),
    TestCase(text: "Hillsdale Michigan", keyword: "hello wor1", fz: 1.0, score: 0.282222222222222),
    TestCase(text: "Hillsdale Michigan", keyword: "h", fz: 1.0, score: 0.519444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "H", fz: 1.0, score: 0.572222222222222),
    TestCase(text: "Hillsdale Michigan", keyword: "HiMi", fz: 1.0, score: 0.669444444444444),
    TestCase(text: "Hillsdale Michigan", keyword: "Hills", fz: 1.0, score: 0.661111111111111),
    TestCase(text: "Hillsdale Michigan", keyword: "Hillsd", fz: 1.0, score: 0.683333333333333),
    ]
  
  static var diacritics: [TestCase] = [
    TestCase(text: "lIIIIIII", keyword: "l", fz: 0.0, score: 0.6),
    TestCase(text: "lIIIIIII", keyword: "l", fz: 0.5, score: 0.6),
    TestCase(text: "lIIIIIII", keyword: "l", fz: 1.0, score: 0.6),
    TestCase(text: "lIIIIIII", keyword: "i", fz: 0.0, score: 0.05625),
    TestCase(text: "lIIIIIII", keyword: "i", fz: 0.5, score: 0.05625),
    TestCase(text: "lIIIIIII", keyword: "i", fz: 1.0, score: 0.05625),
    TestCase(text: "lIIIIIII", keyword: "L", fz: 0.0, score: 0.54375),
    TestCase(text: "lIIIIIII", keyword: "L", fz: 0.5, score: 0.54375),
    TestCase(text: "lIIIIIII", keyword: "L", fz: 1.0, score: 0.54375),
    TestCase(text: "lIIIIIII", keyword: "I", fz: 0.0, score: 0.1125),
    TestCase(text: "lIIIIIII", keyword: "I", fz: 0.5, score: 0.1125),
    TestCase(text: "lIIIIIII", keyword: "I", fz: 1.0, score: 0.1125),
    TestCase(text: "lIIIIIII", keyword: "İ", fz: 0.0, score: 0.05625),
    TestCase(text: "lIIIIIII", keyword: "İ", fz: 0.5, score: 0.05625),
    TestCase(text: "lIIIIIII", keyword: "İ", fz: 1.0, score: 0.05625),
    
    TestCase(text: "lİİİİİİİ", keyword: "l", fz: 0.0, score: 0.6),
    TestCase(text: "lİİİİİİİ", keyword: "l", fz: 0.5, score: 0.6),
    TestCase(text: "lİİİİİİİ", keyword: "l", fz: 1.0, score: 0.6),
    TestCase(text: "lİİİİİİİ", keyword: "i", fz: 0.0, score: 0.05625),
    TestCase(text: "lİİİİİİİ", keyword: "i", fz: 0.5, score: 0.05625),
    TestCase(text: "lİİİİİİİ", keyword: "i", fz: 1.0, score: 0.05625),
    TestCase(text: "lİİİİİİİ", keyword: "L", fz: 0.0, score: 0.54375),
    TestCase(text: "lİİİİİİİ", keyword: "L", fz: 0.5, score: 0.54375),
    TestCase(text: "lİİİİİİİ", keyword: "L", fz: 1.0, score: 0.54375),
    TestCase(text: "lİİİİİİİ", keyword: "I", fz: 0.0, score: 0.05625),
    TestCase(text: "lİİİİİİİ", keyword: "I", fz: 0.5, score: 0.05625),
    TestCase(text: "lİİİİİİİ", keyword: "I", fz: 1.0, score: 0.05625),
    TestCase(text: "lİİİİİİİ", keyword: "İ", fz: 0.0, score: 0.1125),
    TestCase(text: "lİİİİİİİ", keyword: "İ", fz: 0.5, score: 0.1125),
    TestCase(text: "lİİİİİİİ", keyword: "İ", fz: 1.0, score: 0.1125),
    
    TestCase(text: "lİİİİIII", keyword: "l", fz: 0.0, score: 0.6),
    TestCase(text: "lİİİİIII", keyword: "l", fz: 0.5, score: 0.6),
    TestCase(text: "lİİİİIII", keyword: "l", fz: 1.0, score: 0.6),
    TestCase(text: "lİİİİIII", keyword: "i", fz: 0.0, score: 0.05625),
    TestCase(text: "lİİİİIII", keyword: "i", fz: 0.5, score: 0.05625),
    TestCase(text: "lİİİİIII", keyword: "i", fz: 1.0, score: 0.05625),
    TestCase(text: "lİİİİIII", keyword: "L", fz: 0.0, score: 0.54375),
    TestCase(text: "lİİİİIII", keyword: "L", fz: 0.5, score: 0.54375),
    TestCase(text: "lİİİİIII", keyword: "L", fz: 1.0, score: 0.54375),
    TestCase(text: "lİİİİIII", keyword: "I", fz: 0.0, score: 0.05625),
    TestCase(text: "lİİİİIII", keyword: "I", fz: 0.5, score: 0.05625),
    TestCase(text: "lİİİİIII", keyword: "I", fz: 1.0, score: 0.05625),
    TestCase(text: "lİİİİIII", keyword: "İ", fz: 0.0, score: 0.1125),
    TestCase(text: "lİİİİIII", keyword: "İ", fz: 0.5, score: 0.1125),
    TestCase(text: "lİİİİIII", keyword: "İ", fz: 1.0, score: 0.1125),
    
    TestCase(text: "štediti područje", keyword: "sp", fz: 0.0, score: 0.628125),
    TestCase(text: "štediti područje", keyword: "sp", fz: 0.5, score: 0.628125),
    TestCase(text: "štediti područje", keyword: "sp", fz: 1.0, score: 0.628125),
    TestCase(text: "štediti područje", keyword: "st", fz: 0.0, score: 0.571875),
    TestCase(text: "štediti područje", keyword: "st", fz: 0.5, score: 0.571875),
    TestCase(text: "štediti područje", keyword: "st", fz: 1.0, score: 0.571875),
    TestCase(text: "štediti područje", keyword: "pod", fz: 0.0, score: 0.514583333333333),
    TestCase(text: "štediti područje", keyword: "pod", fz: 0.5, score: 0.514583333333333),
    TestCase(text: "štediti područje", keyword: "pod", fz: 1.0, score: 0.514583333333333),
    
    TestCase(text: "stediti podrucje", keyword: "sp", fz: 0.0, score: 0.65625),
    TestCase(text: "stediti podrucje", keyword: "sp", fz: 0.5, score: 0.65625),
    TestCase(text: "stediti podrucje", keyword: "sp", fz: 1.0, score: 0.65625),
    TestCase(text: "stediti podrucje", keyword: "st", fz: 0.0, score: 0.6),
    TestCase(text: "stediti podrucje", keyword: "st", fz: 0.5, score: 0.6),
    TestCase(text: "stediti podrucje", keyword: "st", fz: 1.0, score: 0.6),
    TestCase(text: "stediti podrucje", keyword: "pod", fz: 0.0, score: 0.514583333333333),
    TestCase(text: "stediti podrucje", keyword: "pod", fz: 0.5, score: 0.514583333333333),
    TestCase(text: "stediti podrucje", keyword: "pod", fz: 1.0, score: 0.514583333333333),
  ]
}
